import axios from 'axios'
import router from '@/router'
import { Notification, Message } from 'element-ui'

const requset = axios.create(
    {
        // 添加api前缀
        baseURL: '/',
        // 请求过期时间
        timeout: 5000
    }
)

// 请求拦截器
requset.interceptors.request.use(config => {
    // 给headers添加token
    let token = localStorage.getItem('token')
    if (token) {
        config.headers.token = token
    }
    return config
})

// 响应拦截器
requset.interceptors.response.use(
    response => {
        // 后端状态码20000 表示成功
        if (response?.data?.code === 20000) {
            // 后端返回的结构没有统一,兼容处理一下
            if (typeof response?.data?.data === 'string')
                Message.success(response?.data?.data)
            if (typeof response?.data?.data?.info === 'string')
                Message.success(response?.data?.data?.info)
            return response
        } else if (response?.data?.code === 603) {
            // 603表示token失效
            Notification.error({
                title: '错误',
                message: 'token失效,请重新登录'
            })
            // 替换到登录页面
            let url = window.location.href.split('/')
            if (url[url.length - 1] !== 'login') {
                router.replace('/login')
            }
        } else {
            if (response?.status !== 200) {
                Notification.error({
                    title: '错误',
                    message: '响应错误'
                })
            }
        }
        return response
    }
)

export default requset